package string;


/*
String不适合频繁修改，内存开销大，性能低下
为了解决这个问题，java提供一个用于修改字符串的API：StringBuilder

SringBuilder内部维护了一个可变的char数组，修改性能高，开销小，并且提供了修改
字符串的相关操作：增删改查等
 */

public class StringBuiderDemon {
    public static void main(String[] args) {
        String str = "好好学习java";

        //创建String常见的构造器
        //String builder = new StringBuilder();//内部默认表示一个空的字符串
        //创建StringBuilder的同时将给定的字符串内容复制一份到内部
        //StringBuffer
        StringBuilder builder = new StringBuilder(str);


        /*
        增
        好好学习java

        好好学习java,为了找一份好工作!
         */
        builder.append("为了找一份好工作!");
        System.out.println(str); //String是不变对象，内容没有发生改变
        System.out.println(builder);//改变的是StringBuilder内部字符串内容

        builder.replace(9,16,"就是为了改变世界!");//通过下标改变原来给定的字符串
        System.out.println(builder);

        builder.delete(0,8);
        System.out.println(builder);

        //将给定的内容插入到指定位置
        builder.insert(0,"活着");
        System.out.println(builder);

        //反转字符串的内容
        builder.reverse();
        System.out.println(builder);

        //StringBuilder知识修改字符串的工具类，并非Sring本身
        //当时用SringBuilder修改内容后，可以调用toString方法得到内部的字符串内容
        String line = builder.toString();
        System.out.println(line);



    }
}
